package cn.topevery.garden.entity.dto;

import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 *  DTO
 *
 * @author code-generate
 * @date 2021-09-24
 */
@Data
@ApiModel(value = "DingtalkUserAttendanceResultDTO", description = " DTO")
public class DingtalkUserAttendanceResultDTO implements Serializable{
    /**
     * 自增id
     */
    private Integer id;

        /** 打卡记录id */
    @ApiModelProperty(value = "打卡记录id")
    private Long recordId;

    /** 钉钉用户id */
    @ApiModelProperty(value = "钉钉用户id")
    private String userId;

    /** 工作日 */
    @ApiModelProperty(value = "工作日")
    private LocalDate workDate;

    /** 考勤类型：		            OnDuty：上班		            OffDuty：下班 */
    @ApiModelProperty(value = "考勤类型：		            OnDuty：上班		            OffDuty：下班")
    private String checkType;

    /** 计算迟到和早退，基准时间 */
    @ApiModelProperty(value = "计算迟到和早退，基准时间")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime baseCheckTime;

    /** 实际打卡时间, 用户打卡时间的毫秒数。 */
    @ApiModelProperty(value = "实际打卡时间, 用户打卡时间的毫秒数。")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime userCheckTime;

    /** 位置结果：		            Normal：范围内		            Outside：范围外		            NotSigned：未打卡 */
    @ApiModelProperty(value = "位置结果：		            Normal：范围内		            Outside：范围外		            NotSigned：未打卡")
    private String locationResult;

    /** 打卡结果：		            Normal：正常		            Early：早退		            Late：迟到		            SeriousLate：严重迟到		            Absenteeism：旷工迟到		            NotSigned：未打卡 */
    @ApiModelProperty(value = "打卡结果：		            Normal：正常		            Early：早退		            Late：迟到		            SeriousLate：严重迟到		            Absenteeism：旷工迟到		            NotSigned：未打卡")
    private String timeResult;

    /** 排班id */
    @ApiModelProperty(value = "排班id")
    private Long planId;

    /** 考勤组id */
    @ApiModelProperty(value = "考勤组id")
    private Long groupId;

    /** 数据来源：		            ATM：考勤机打卡（指纹/人脸打卡）		            BEACON：IBeacon		            DING_ATM：钉钉考勤机（考勤机蓝牙打卡）		            USER：用户打卡		            BOSS：老板改签		            APPROVE：审批系统		            SYSTEM：考勤系统		            AUTO_CHECK：自动打卡 */
    @ApiModelProperty(value = "数据来源：		            ATM：考勤机打卡（指纹/人脸打卡）		            BEACON：IBeacon		            DING_ATM：钉钉考勤机（考勤机蓝牙打卡）		            USER：用户打卡		            BOSS：老板改签		            APPROVE：审批系统		            SYSTEM：考勤系统		            AUTO_CHECK：自动打卡")
    private String sourceType;

    /** 关联的审批实例ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。可以与获取审批实例详情配合使用 */
    @ApiModelProperty(value = "关联的审批实例ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。可以与获取审批实例详情配合使用")
    private String procInstId;

    /** 关联的审批ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。 */
    @ApiModelProperty(value = "关联的审批ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。")
    private Long approveId;



}
